<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="insn.css"/><meta name="generator" content="iform.xsl"/><title>MSR (immediate) -- A64</title></head><body><table style="margin: 0 auto;"><tr><td><div class="topbar"><a href="index.html">Base Instructions</a></div></td><td><div class="topbar"><a href="fpsimdindex.html">SIMD&amp;FP Instructions</a></div></td><td><div class="topbar"><a href="sveindex.html">SVE Instructions</a></div></td><td><div class="topbar"><a href="mortlachindex.html">SME Instructions</a></div></td><td><div class="topbar"><a href="encodingindex.html">Index by Encoding</a></div></td><td><div class="topbar"><a href="shared_pseudocode.html">Shared Pseudocode</a></div></td><td><div class="topbar"><a href="notice.html">Proprietary Notice</a></div></td></tr></table><hr/><h2 class="instruction-section">MSR (immediate)</h2>
      <p class="aml">Move immediate value to Special Register moves an immediate value to selected bits of the PSTATE. For more information, see <a class="armarm-xref" title="Reference to Armv8 ARM section">Process state, PSTATE</a>.</p>
      <p class="aml">The bits that can be written by this instruction are:</p>
      <ul>
        <li>PSTATE.D, PSTATE.A, PSTATE.I, PSTATE.F, and PSTATE.SP.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_SSBS</a> is implemented, PSTATE.SSBS.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_PAN</a> is implemented, PSTATE.PAN.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_UAO</a> is implemented, PSTATE.UAO.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_DIT</a> is implemented, PSTATE.DIT.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_MTE</a> is implemented, PSTATE.TCO.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_NMI</a> is implemented, PSTATE.ALLINT.</li>
        <li>If <a class="armarm-xref" title="Reference to Armv8 ARM section">FEAT_SME</a> is implemented, PSTATE.SM and PSTATE.ZA.</li>
        <li>If FEAT_EBEP is implemented, PSTATE.PM.</li>
      </ul>
    <p class="desc">This instruction is used by the aliases <a href="smstart_msr_imm.html" title="SMSTART">SMSTART</a>, and <a href="smstop_msr_imm.html" title="SMSTOP">SMSTOP</a>.</p>
    <p class="desc"/><div class="regdiagram-32"><table class="regdiagram"><thead><tr><td>31</td><td>30</td><td>29</td><td>28</td><td>27</td><td>26</td><td>25</td><td>24</td><td>23</td><td>22</td><td>21</td><td>20</td><td>19</td><td>18</td><td>17</td><td>16</td><td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>9</td><td>8</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr></thead><tbody><tr class="firstrow"><td class="l">1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td class="r">0</td><td class="lr">0</td><td class="l">0</td><td class="r">0</td><td colspan="3" class="lr">op1</td><td class="l">0</td><td>1</td><td>0</td><td class="r">0</td><td colspan="4" class="lr">CRm</td><td colspan="3" class="lr">op2</td><td class="l">1</td><td>1</td><td>1</td><td>1</td><td class="r">1</td></tr></tbody></table></div><div class="encoding"><h4 class="encoding"/><a id="MSR_SI_pstate"/><p class="asm-code">MSR  <a href="#sa_pstatefield" title="PSTATE field name (field &quot;op1:op2:CRm&quot;) [ALLINT (FEAT_NMI),DAIFClr,DAIFSet,DIT (FEAT_DIT),PAN (FEAT_PAN),PM (FEAT_EBEP),SEE(pstate),SPSel,SSBS (FEAT_SSBS),SVCRSM (FEAT_SME),SVCRSMZA (FEAT_SME),SVCRZA (FEAT_SME),TCO (FEAT_MTE),UAO (FEAT_UAO)]">&lt;pstatefield&gt;</a>, #<a href="#sa_imm" title="4-bit unsigned immediate [0-15] (field &quot;CRm&quot;)">&lt;imm&gt;</a></p></div><p class="pseudocode">if op1 == '000' &amp;&amp; op2 == '000' then SEE "CFINV";
if op1 == '000' &amp;&amp; op2 == '001' then SEE "XAFLAG";
if op1 == '000' &amp;&amp; op2 == '010' then SEE "AXFLAG";

<a href="shared_pseudocode.html#AArch64.CheckSystemAccess.7" title="function: AArch64.CheckSystemAccess(bits(2) op0, bits(3) op1, bits(4) crn, bits(4) crm, bits(3) op2, bits(5) rt, bit read)">AArch64.CheckSystemAccess</a>('00', op1, '0100', CRm, op2, '11111', '0');
bits(2) min_EL;
boolean need_secure = FALSE;

case op1 of
    when '00x'
        min_EL = <a href="shared_pseudocode.html#EL1" title="constant bits(2) EL1 = '01'">EL1</a>;
    when '010'
        min_EL = <a href="shared_pseudocode.html#EL1" title="constant bits(2) EL1 = '01'">EL1</a>;
    when '011'
        min_EL = <a href="shared_pseudocode.html#EL0" title="constant bits(2) EL0 = '00'">EL0</a>;
    when '100'
        min_EL = <a href="shared_pseudocode.html#EL2" title="constant bits(2) EL2 = '10'">EL2</a>;
    when '101'
        if !<a href="shared_pseudocode.html#impl-shared.HaveVirtHostExt.0" title="function: boolean HaveVirtHostExt()">HaveVirtHostExt</a>() then
            UNDEFINED;
        min_EL = <a href="shared_pseudocode.html#EL2" title="constant bits(2) EL2 = '10'">EL2</a>;
    when '110'
        min_EL = <a href="shared_pseudocode.html#EL3" title="constant bits(2) EL3 = '11'">EL3</a>;
    when '111'
        min_EL = <a href="shared_pseudocode.html#EL1" title="constant bits(2) EL1 = '01'">EL1</a>;
        need_secure = TRUE;

if (<a href="shared_pseudocode.html#impl-shared.UInt.1" title="function: integer UInt(bits(N) x)">UInt</a>(PSTATE.EL) &lt; <a href="shared_pseudocode.html#impl-shared.UInt.1" title="function: integer UInt(bits(N) x)">UInt</a>(min_EL) || (need_secure &amp;&amp; <a href="shared_pseudocode.html#impl-shared.CurrentSecurityState.0" title="function: SecurityState CurrentSecurityState()">CurrentSecurityState</a>() != <a href="shared_pseudocode.html#SS_Secure" title="enumeration SecurityState { SS_NonSecure, SS_Root, SS_Realm, SS_Secure }">SS_Secure</a>)) then
    UNDEFINED;

<a href="shared_pseudocode.html#PSTATEField" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField</a> field;
case op1:op2 of
    when '000 011'
        if !<a href="shared_pseudocode.html#impl-shared.HaveUAOExt.0" title="function: boolean HaveUAOExt()">HaveUAOExt</a>() then UNDEFINED;
        field = <a href="shared_pseudocode.html#PSTATEField_UAO" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_UAO</a>;
    when '000 100'
        if !<a href="shared_pseudocode.html#impl-shared.HavePANExt.0" title="function: boolean HavePANExt()">HavePANExt</a>() then UNDEFINED;
        field = <a href="shared_pseudocode.html#PSTATEField_PAN" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_PAN</a>;
    when '000 101' field = <a href="shared_pseudocode.html#PSTATEField_SP" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SP</a>;
    when '001 000'
        case CRm of
            when '000x'
                if !<a href="shared_pseudocode.html#impl-shared.HaveFeatNMI.0" title="function: boolean HaveFeatNMI()">HaveFeatNMI</a>() then UNDEFINED;
                field = <a href="shared_pseudocode.html#PSTATEField_ALLINT" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_ALLINT</a>;
            when '001x'
                if !<a href="shared_pseudocode.html#impl-shared.HaveFeatEBEP.0" title="function: boolean HaveFeatEBEP()">HaveFeatEBEP</a>() then UNDEFINED;
                field = <a href="shared_pseudocode.html#PSTATEField_PM" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_PM</a>;
            otherwise
                UNDEFINED;
    when '011 010'
        if !<a href="shared_pseudocode.html#impl-shared.HaveDITExt.0" title="function: boolean HaveDITExt()">HaveDITExt</a>() then UNDEFINED;
        field = <a href="shared_pseudocode.html#PSTATEField_DIT" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DIT</a>;
    when '011 011'
        case CRm of
            when '001x'
                if !<a href="shared_pseudocode.html#impl-aarch64.HaveSME.0" title="function: boolean HaveSME()">HaveSME</a>() then UNDEFINED;
                field = <a href="shared_pseudocode.html#PSTATEField_SVCRSM" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRSM</a>;
            when '010x'
                if !<a href="shared_pseudocode.html#impl-aarch64.HaveSME.0" title="function: boolean HaveSME()">HaveSME</a>() then UNDEFINED;
                field = <a href="shared_pseudocode.html#PSTATEField_SVCRZA" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRZA</a>;
            when '011x'
                if !<a href="shared_pseudocode.html#impl-aarch64.HaveSME.0" title="function: boolean HaveSME()">HaveSME</a>() then UNDEFINED;
                field = <a href="shared_pseudocode.html#PSTATEField_SVCRSMZA" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRSMZA</a>;
            otherwise
                UNDEFINED;
    when '011 100'
        if !<a href="shared_pseudocode.html#impl-shared.HaveMTEExt.0" title="function: boolean HaveMTEExt()">HaveMTEExt</a>() then UNDEFINED;
        field = <a href="shared_pseudocode.html#PSTATEField_TCO" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_TCO</a>;
    when '011 110' field = <a href="shared_pseudocode.html#PSTATEField_DAIFSet" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFSet</a>;
    when '011 111' field = <a href="shared_pseudocode.html#PSTATEField_DAIFClr" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFClr</a>;
    when '011 001'
        if !<a href="shared_pseudocode.html#impl-shared.HaveSSBSExt.0" title="function: boolean HaveSSBSExt()">HaveSSBSExt</a>() then UNDEFINED;
        field = <a href="shared_pseudocode.html#PSTATEField_SSBS" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SSBS</a>;
    otherwise UNDEFINED;

// Check that an AArch64 MSR/MRS access to the DAIF flags is permitted
if PSTATE.EL == <a href="shared_pseudocode.html#EL0" title="constant bits(2) EL0 = '00'">EL0</a> &amp;&amp; field IN {<a href="shared_pseudocode.html#PSTATEField_DAIFSet" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFSet</a>, <a href="shared_pseudocode.html#PSTATEField_DAIFClr" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFClr</a>} then
    if <a href="shared_pseudocode.html#impl-shared.IsInHost.0" title="function: boolean IsInHost()">IsInHost</a>() || SCTLR_EL1.UMA == '0' then
        if <a href="shared_pseudocode.html#impl-shared.EL2Enabled.0" title="function: boolean EL2Enabled()">EL2Enabled</a>() &amp;&amp; HCR_EL2.TGE == '1' then
            <a href="shared_pseudocode.html#AArch64.SystemAccessTrap.2" title="function: AArch64.SystemAccessTrap(bits(2) target_el, integer ec)">AArch64.SystemAccessTrap</a>(<a href="shared_pseudocode.html#EL2" title="constant bits(2) EL2 = '10'">EL2</a>, 0x18);
        else
            <a href="shared_pseudocode.html#AArch64.SystemAccessTrap.2" title="function: AArch64.SystemAccessTrap(bits(2) target_el, integer ec)">AArch64.SystemAccessTrap</a>(<a href="shared_pseudocode.html#EL1" title="constant bits(2) EL1 = '01'">EL1</a>, 0x18);</p>
  <div class="encoding-notes"/><h3 class="explanations">Assembler Symbols</h3><div class="explanations"><table><col class="asyn-l"/><col class="asyn-r"/><tr><td>&lt;pstatefield&gt;</td><td><a id="sa_pstatefield"/>
        <p>Is a PSTATE field name. For the MSR instruction, this is 
      encoded in
      <q>op1:op2:CRm</q>:
        </p>
        <table class="valuetable">
          
            <thead>
              <tr>
                <th class="bitfield">op1</th>
                <th class="bitfield">op2</th>
                <th class="bitfield">CRm</th>
                <th class="symbol">&lt;pstatefield&gt;</th>
                <th class="symbol">Architectural Feature</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">00x</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol"><a href="encodingindex.html#pstate">SEE PSTATE</a></td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">010</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol"><a href="encodingindex.html#pstate">SEE PSTATE</a></td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">011</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">UAO</td>
                <td class="feature">
                  FEAT_UAO
                </td>
              </tr>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">100</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">PAN</td>
                <td class="feature">
                  FEAT_PAN
                </td>
              </tr>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">101</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">SPSel</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">000</td>
                <td class="bitfield">11x</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">000</td>
                <td class="bitfield">000x</td>
                <td class="symbol">ALLINT</td>
                <td class="feature">
                  FEAT_NMI
                </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">000</td>
                <td class="bitfield">001x</td>
                <td class="symbol">PM</td>
                <td class="feature">
                  FEAT_EBEP
                </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">000</td>
                <td class="bitfield">01xx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">000</td>
                <td class="bitfield">1xxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">001</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">01x</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">001</td>
                <td class="bitfield">1xx</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">010</td>
                <td class="bitfield">xxx</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">000</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">001</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">SSBS</td>
                <td class="feature">
                  FEAT_SSBS
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">010</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">DIT</td>
                <td class="feature">
                  FEAT_DIT
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">011</td>
                <td class="bitfield">000x</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">011</td>
                <td class="bitfield">001x</td>
                <td class="symbol">SVCRSM</td>
                <td class="feature">
                  FEAT_SME
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">011</td>
                <td class="bitfield">010x</td>
                <td class="symbol">SVCRZA</td>
                <td class="feature">
                  FEAT_SME
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">011</td>
                <td class="bitfield">011x</td>
                <td class="symbol">SVCRSMZA</td>
                <td class="feature">
                  FEAT_SME
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">011</td>
                <td class="bitfield">1xxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">100</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">TCO</td>
                <td class="feature">
                  FEAT_MTE
                </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">101</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">110</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">DAIFSet</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">011</td>
                <td class="bitfield">111</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">DAIFClr</td>
                <td class="feature">
          -
        </td>
              </tr>
              <tr>
                <td class="bitfield">1xx</td>
                <td class="bitfield">xxx</td>
                <td class="bitfield">xxxx</td>
                <td class="symbol">RESERVED</td>
                <td class="feature">
          -
        </td>
              </tr>
            </tbody>
          
        </table>
         For the SMSTART and SMSTOP aliases, this is encoded in "CRm&lt;2:1&gt;", where 0b01 specifies SVCRSM, 0b10 specifies SVCRZA, and 0b11 specifies SVCRSMZA.
      </td></tr></table><table><col class="asyn-l"/><col class="asyn-r"/><tr><td>&lt;imm&gt;</td><td><a id="sa_imm"/>
        
          <p class="aml">Is a 4-bit unsigned immediate, in the range 0 to 15, encoded in the "CRm" field. Restricted to the range 0 to 1, encoded in "CRm&lt;0&gt;", when &lt;pstatefield&gt; is ALLINT, PM, SVCRSM, SVCRSMZA, or SVCRZA.</p>
        
      </td></tr></table></div><div class="syntax-notes"/><h3 class="aliastable" id="">Alias Conditions</h3><table class="aliastable"><thead><tr><th>Alias</th><th>Is preferred when</th></tr></thead><tbody><tr><td><a href="smstart_msr_imm.html" title="SMSTART">SMSTART</a></td><td class="notfirst"><span class="pseudocode">op1 == '011' &amp;&amp; CRm == '0xx1' &amp;&amp; op2 == '011'</span></td></tr><tr><td><a href="smstop_msr_imm.html" title="SMSTOP">SMSTOP</a></td><td class="notfirst"><span class="pseudocode">op1 == '011' &amp;&amp; CRm == '0xx0' &amp;&amp; op2 == '011'</span></td></tr></tbody></table>
    <div class="ps"><a id="execute"/><h3 class="pseudocode">Operation</h3>
      <p class="pseudocode">case field of
    when <a href="shared_pseudocode.html#PSTATEField_SSBS" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SSBS</a>
        PSTATE.SSBS = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_SP" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SP</a>
        PSTATE.SP = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_DAIFSet" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFSet</a>
        PSTATE.D = PSTATE.D OR CRm&lt;3&gt;;
        PSTATE.A = PSTATE.A OR CRm&lt;2&gt;;
        PSTATE.I = PSTATE.I OR CRm&lt;1&gt;;
        PSTATE.F = PSTATE.F OR CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_DAIFClr" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DAIFClr</a>
        PSTATE.D = PSTATE.D AND NOT(CRm&lt;3&gt;);
        PSTATE.A = PSTATE.A AND NOT(CRm&lt;2&gt;);
        PSTATE.I = PSTATE.I AND NOT(CRm&lt;1&gt;);
        PSTATE.F = PSTATE.F AND NOT(CRm&lt;0&gt;);
    when <a href="shared_pseudocode.html#PSTATEField_PAN" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_PAN</a>
        PSTATE.PAN = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_UAO" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_UAO</a>
        PSTATE.UAO = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_DIT" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_DIT</a>
        PSTATE.DIT = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_TCO" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_TCO</a>
        PSTATE.TCO = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_ALLINT" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_ALLINT</a>
        if (PSTATE.EL == <a href="shared_pseudocode.html#EL1" title="constant bits(2) EL1 = '01'">EL1</a> &amp;&amp; <a href="shared_pseudocode.html#impl-aarch64.IsHCRXEL2Enabled.0" title="function: boolean IsHCRXEL2Enabled()">IsHCRXEL2Enabled</a>() &amp;&amp; HCRX_EL2.TALLINT == '1' &amp;&amp; CRm&lt;0&gt; == '1') then
            <a href="shared_pseudocode.html#AArch64.SystemAccessTrap.2" title="function: AArch64.SystemAccessTrap(bits(2) target_el, integer ec)">AArch64.SystemAccessTrap</a>(<a href="shared_pseudocode.html#EL2" title="constant bits(2) EL2 = '10'">EL2</a>, 0x18);
        PSTATE.ALLINT = CRm&lt;0&gt;;
    when <a href="shared_pseudocode.html#PSTATEField_SVCRSM" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRSM</a>
        <a href="shared_pseudocode.html#impl-aarch64.CheckSMEAccess.0" title="function: CheckSMEAccess()">CheckSMEAccess</a>();
        <a href="shared_pseudocode.html#impl-aarch64.SetPSTATE_SM.1" title="function: SetPSTATE_SM(bit value)">SetPSTATE_SM</a>(CRm&lt;0&gt;);
    when <a href="shared_pseudocode.html#PSTATEField_SVCRZA" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRZA</a>
        <a href="shared_pseudocode.html#impl-aarch64.CheckSMEAccess.0" title="function: CheckSMEAccess()">CheckSMEAccess</a>();
        <a href="shared_pseudocode.html#impl-aarch64.SetPSTATE_ZA.1" title="function: SetPSTATE_ZA(bit value)">SetPSTATE_ZA</a>(CRm&lt;0&gt;);
    when <a href="shared_pseudocode.html#PSTATEField_SVCRSMZA" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_SVCRSMZA</a>
        <a href="shared_pseudocode.html#impl-aarch64.CheckSMEAccess.0" title="function: CheckSMEAccess()">CheckSMEAccess</a>();
        <a href="shared_pseudocode.html#impl-aarch64.SetPSTATE_SM.1" title="function: SetPSTATE_SM(bit value)">SetPSTATE_SM</a>(CRm&lt;0&gt;);
        <a href="shared_pseudocode.html#impl-aarch64.SetPSTATE_ZA.1" title="function: SetPSTATE_ZA(bit value)">SetPSTATE_ZA</a>(CRm&lt;0&gt;);
    when <a href="shared_pseudocode.html#PSTATEField_PM" title="enumeration PSTATEField {PSTATEField_DAIFSet, PSTATEField_DAIFClr, PSTATEField_PAN, PSTATEField_UAO, PSTATEField_DIT, PSTATEField_SSBS, PSTATEField_TCO, PSTATEField_SVCRSM, PSTATEField_SVCRZA, PSTATEField_SVCRSMZA, PSTATEField_ALLINT, PSTATEField_PM, PSTATEField_SP }">PSTATEField_PM</a>
        PSTATE.PM = CRm&lt;0&gt;;</p>
    </div>
  <hr/><table style="margin: 0 auto;"><tr><td><div class="topbar"><a href="index.html">Base Instructions</a></div></td><td><div class="topbar"><a href="fpsimdindex.html">SIMD&amp;FP Instructions</a></div></td><td><div class="topbar"><a href="sveindex.html">SVE Instructions</a></div></td><td><div class="topbar"><a href="mortlachindex.html">SME Instructions</a></div></td><td><div class="topbar"><a href="encodingindex.html">Index by Encoding</a></div></td><td><div class="topbar"><a href="shared_pseudocode.html">Shared Pseudocode</a></div></td><td><div class="topbar"><a href="notice.html">Proprietary Notice</a></div></td></tr></table><p class="versions">
      Internal version only: isa v33.62, AdvSIMD v29.12, pseudocode v2023-03_rel, sve v2023-03_rc3b
      ; Build timestamp: 2023-03-31T11:36
    </p><p class="copyconf">
      Copyright © 2010-2023 Arm Limited or its affiliates. All rights reserved.
      This document is Non-Confidential.
    </p></body></html>
